<?php

namespace App\Http\Controllers\App;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Models\PointsOrder;
use App\Models\PointsGoods;
/**
 * 积分订单管理控制器
 */
class PointsOrderController extends BaseController
{
    /**
     * 订单列表(GET) api/porder/lists
     * 
     * @return json
     */
    public function lists(Request $request)
    {
        // 商户SESSION数据
        $shopInfo = $request->session()->get('shopInfo');

        // 商户状态判断
        $shop_id = $shopInfo['id'];     // 店铺id
        // 测试数据
        // $shop_id = 1;

        if(!$shop_id){
            return self::error('未登录');
        }

        // 初始化数组
        $where = $return = array();

        $obj = new PointsOrder();

        // 构造查询条件
        $obj = $obj->where('delivery_point',$shop_id);
        $obj = $obj->where('status','!=',0);

        // 检索条件
        $request->input('status')   == null || $obj = $obj->where('status',$request->input('status'));                      // 订单状态（1待提货 2已完成）
        $request->input('phone')    == null || $obj = $obj->where('phone','like','%'.$request->input('phone').'%');         // 手机号
        $request->input('order_id') == null || $obj = $obj->where('order_id','like','%'.$request->input('order_id').'%');   // 订单号
        $request->input('stime')    == null || $obj = $obj->where('pay_time','>=',$request->input('stime'));                // 开始时间
        $request->input('etime')    == null || $obj = $obj->where('pay_time','<=',$request->input('etime'));                // 结束世家
        if($request->input('stime') && $request->input('etime')){
            $obj = $obj->whereBetween('pay_time',[$request->input('stime'),$request->input('etime')]);                      // 时间区间
        }

        // 查询列表
        $return = $obj->paginate(10);

        return self::json($return , '查询成功');
    }

    /**
     * 用户提货(POST) api/porder/take
     * 
     * @return json
     */
    public function take(Request $request)
    {
        $order_id   = $request->input('order_id');        // 订单号
        $take_no    = $request->input('take_no');         // 提货码

        if(!$order_id || !$take_no){
            return self::error('参数不完整');
        }

        // 查询订单信息
        $order_info = PointsOrder::where('order_id',$order_id)->where('status','1')->first();
        if(!$order_info){
            return self::error('订单不存在');
        }

        // 验证提货码
        if($order_info->take_no != $take_no){
            return self::error('提货码错误');
        }

        // 开启事务
        DB::beginTransaction();
        try{
        
            // 确认用户提货
            $re = PointsOrder::where('order_id',$order_id)->update(['status'=>2]);
            if(!$re){
                return self::error('提货失败');
            }

            // 提交事务
            DB::commit();

            return self::success('提货通过');

        }catch (\Exception $e) {

            // 回滚事务
            DB::rollback();

            return self::json($e , '审核出错' , 400);
        }

    }

    

}
